package com.jhc.gateway.config;

import cn.dev33.satoken.reactor.filter.SaReactorFilter;
import cn.dev33.satoken.stp.StpUtil;
import cn.dev33.satoken.util.SaResult;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class SaTokenConfig {
    /**
     * 注册 [Sa-Token全局过滤器]
     */
    @Bean
    public SaReactorFilter getSaReactorFilter() {
        return new SaReactorFilter()
                // 指定 [拦截路由]
                .addInclude("/**")    /* 拦截所有path */
                // 指定 [放行路由]
                .addExclude("/auth/login")
                // 指定[认证函数]: 每次请求执行
                .setAuth(obj -> StpUtil.checkLogin())
                // 指定[异常处理函数]：每次[认证函数]发生异常时执行此函数
                .setError(e -> SaResult.error("未登录"));
    }
}
